.TH std::basic_ostream::operator= 3 "2024.06.10" "http://cppreference.com" "C++ Standard Libary"
.SH NAME
std::basic_ostream::operator= \- std::basic_ostream::operator=

.SH Synopsis
   protected:                                                     \fB(1)\fP
   basic_ostream& operator=( const basic_ostream& rhs ) = delete;
   protected:                                                     \fB(2)\fP \fI(since C++11)\fP
   basic_ostream& operator=( basic_ostream&& rhs );

   1) The copy assignment operator is protected, and is deleted. Output streams are not
   CopyAssignable.
   2) The move assignment operator exchanges all data members of the base class, except
   for rdbuf(), with rhs, as if by calling swap(*rhs). This move assignment operator is
   protected: it is only called by the move assignment operators of the derived movable
   output stream classes std::basic_ofstream and std::basic_ostringstream, which know
   how to correctly move-assign the associated streambuffers.

.SH Parameters

   rhs - the basic_ostream object from which to assign to *this

.SH Example


// Run this code

 #include <iostream>
 #include <sstream>
 #include <utility>

 int main()
 {
     std::ostringstream s;
 //  std::cout = s;            // ERROR: copy assignment operator is deleted
 //  std::cout = std::move(s); // ERROR: move assignment operator is protected
     s = std::move(std::ostringstream() << 42); // OK, moved through derived
     std::cout << s.str() << '\\n';
 }

.SH Output:

 42

   Defect reports

   The following behavior-changing defect reports were applied retroactively to
   previously published C++ standards.

      DR    Applied to              Behavior as published              Correct behavior
                       1. the parameter type of overload \fB(1)\fP was
   LWG 2067 C++11      basic_ostream&                                  1. added const
                       2. the parameter type of overload \fB(2)\fP was const 2. removed const
                       basic_ostream&&
